Imparting Three-Dimensional Characteristics in a Two-Dimensional Space

ABSTRACT

Processes and techniques for imparting three-dimensional visual characteristics to images in a two-dimensional space are described. In one implementation, a graphical image is received in a two-dimensional space (e.g., a user interface on a computing device). A shape palette is presented to a user, the shape palette comprising a visual representation of three-dimensional visual information. Based on user markup of the shape palette, three-dimensional visual information is extracted from the shape palette and correlated with the graphical image. The three-dimensional visual information is processed to render the graphical image with three-dimensional visual characteristics.

BACKGROUND

Today's computer user has access to vast data processing and storageresources. These resources enable users to accomplish computing tasksthat were impossible using previous generations of computers,particularly in the area of computer graphics. Modern computer graphicstools take advantage of these resources to create and display visuallycomplex and highly detailed computer-generated images. The challengethen becomes to find user-friendly ways to input the large quantities ofdata required to define computer-generated images.

Most current computer-graphics tools enable users to modify or creategraphics that have the appearance of depth, or appear to bethree-dimensional. These tools typically create the appearance ofthree-dimensionality in a computer image by creating a mathematicalrepresentation of a three-dimensional object. Inputting the data neededto create the mathematical representation can be a very time consumingand tedious process. For example, most computer graphics tools require auser to specify three-dimensional information in multiple differentimage views and thus present a significant burden to users.

SUMMARY

This summary is provided to introduce techniques and processes forgraphics processing, which are further described below in the DetailedDescription. This summary is not intended to identify essential featuresof the claimed subject matter, nor is it intended for use in determiningthe scope of the claimed subject matter.

This disclosure is directed to processes and techniques for impartingthree-dimensional characteristics to images in a two-dimensional space.In one implementation, a user provides markup in an image canvasinterface and provides corresponding markup in a shape palette. Theshape palette presents a visual representation of three-dimensionalinformation. Based on the user markup three-dimensional information isextracted from the shape palette and correlated with the user markup inthe image canvas. The correlated three-dimensional information and usermarkup from the image canvas are processed to render an image withthree-dimensional characteristics.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is set forth with reference to the accompanyingfigures. In the figures, the left-most digit(s) of a reference numberidentifies the figure in which the reference number first appears. Theuse of the same reference numbers in different figures indicates similaror identical items.

FIG. 1 illustrates one example of a user interface for rendering animage with three-dimensional characteristics based on user markup of animage canvas and user markup of a shape palette.

FIG. 2 illustrates one example of correlation between an image canvasand a shape palette to produce an image with three-dimensionalcharacteristics.

FIG. 3 illustrates one example of a shape palette.

FIG. 4 illustrates one example of a correlation between an image canvasand a shape palette to produce an image with three-dimensionalcharacteristics.

FIG. 5 is a flow diagram of an illustrative process of rendering animage with three-dimensional characteristics based on user markup of animage canvas and user markup of a shape palette.

FIG. 6 is a flow diagram detailing certain aspects of an illustrativeprocess of rendering an image with three-dimensional characteristicsbased on user markup of an image canvas and user markup of a shapepalette.

FIG. 7 illustrates one example of an apparatus for rendering an imagewith three-dimensional characteristics based on user markup of an imagecanvas and user markup of a shape palette.

DETAILED DESCRIPTION

Described herein are processes and techniques for imparting visualcharacteristics of three-dimensionality to graphic images in atwo-dimensional space. The processes and techniques recognize thathumans have the ability to infer three-dimensional (3D) structure fromtwo-dimensional (2D) images. This ability applies to a variety of imageformats, such as photographs, paintings, sketches, and line art. Oftenonly a few 2D strokes are necessary to express the 3D shape of anobject. An observer can often make an analogy between a stroke or markin a 2D space and a corresponding 3D aspect or surface. The challenge ina computer graphics interface is to enable a user to use this ability toinfer 3D structure to specify 3D information that can be interpreted bya computer graphics tool.

To enable a user to quickly specify 3D information in a 2D space (e.g.,a computer graphics interface), the shape palette is introduced. In oneexample, a shape palette is a 2D image of a 3D object that storessalient 3D geometric information that can be extracted through usermarkup of the shape palette. A user provides a 2D primitive (e.g., aline, stroke or other shape) in a space on a user interface and thendraws a corresponding primitive on the shape palette, 3D information isextracted from the shape palette based on the user markup and processed.Processing the 3D information can include copying, or warping, the 3Dinformation to the 2D user interface. Multiple primitives can be markedup using a shape palette and rendered and combined to produce an overallimage. From the transfer of a few sparse primitives, a 3D model surfacecan be extracted based on the 3D information transferred from the shapepalette to the user interface. The shape palette can be marked-up in asingle view (i.e., the shape palette need not be rotated or otherwisemanipulated) to extract the desired 3D information. This is not intendedto be limiting, however, and some implementations may utilize multipleshape palette views. Thus, the shape palette serves as an intuitiveinterface whereby a user can specify 3D visual aspects that the userwishes to impart to a 2D primitive or other visual image.

One approach to implementing the shape palette is to configure the shapepalette as a 3D normal map. The normal map can be presented, forexample, as a Lambertian-shaded image, such as a sphere. In one suchexample, the transfer of 3D information from the shape palette to aprimitive involves the transfer of normal information from the shapepalette to the primitive. Thus, a shape palette can comprise a pluralityof pixels wherein each of the plurality of pixels is associated with anormal value. With a minimum amount of shape palette markup, a user cangenerate a sparse normal map. The sparse normal map is then processed toproduce a dense normal map that can be further processed to produce a 3Dsurface or height image.

A shape palette can be generated using an orthographic projection of a3D shape model and can store the inner product of a synthetic light andthe 3D normal at each point in the projection (i.e., the shape paletteutilizes Lambertian shading, for example). Shape palettes can consist ofany suitable 3D model, such as sphere, a cone, a torus, and so on.Suitable ways of processing the 3D normal information from a shapepalette to produce a dense normal field are discussed below.

Illustrative User Interface

FIG. 1 shows at 100 a graphics tool interface 102 that can implement thedescribed processes and techniques. Graphics tool interface 102 ispresented for purposes of example only, and the described processes andtechniques can be implemented using different types and arrangements ofuser interfaces. Graphics tool interface 102 can be generated and/ordisplayed using any suitable device, including a desktop computer, alaptop, a personal digital assistant (PDA), a cellular phone, and so on.In this context, graphics tool interface 102 exists in a 2D space (i.e.,the tool is displayed on a 2D interface, such as a computer monitor).

Graphics tool interface 102 includes image canvas 104. Image canvas 104enables a user of graphics tool interface 102 to provide shapes and/ormarkup to which the user wishes to impart 3D visual characteristics.Also included in graphics tool interface 102 is shape palette 106. Shapepalette 106 is configured to receive user markup, and based on the usermarkup, to impart 3D information to the shapes and/or markup indicatedin image canvas 104. Rendering canvas 108 displays an image that isrendered based on the shapes and/or markup from image canvas 104 and theuser markup provided in shape palette 106.

In operation, a user provides an image and/or markup in image canvas104. Markup refers generally to providing strokes, lines, curves orother graphic input, such as by using a freehand tool as part of agraphics application. In one example, a user can import an image file(e.g., in JPEG, bitmap, or any other suitable graphics format) to theimage canvas and use the image as a stencil over which markup can beprovided in the image canvas. As the user provides markup in the imagecanvas, the user provides corresponding markup in the shape palette. Forexample, a user can make a stroke in image canvas 104 and make acorresponding stroke in shape palette 106. The graphics tool willautomatically correlate the two strokes and impart the 3D informationindicated by the shape palette stroke to the corresponding stroke inimage canvas 104. However, as discussed below, other methods may be usedto correlate shape palette markup with image canvas markup. This markupcorrelation is discussed in more detail below. Based on the correlationbetween the image canvas markup and the shape palette markup, an imageis rendered in rendering canvas 108. The image rendered in renderingcanvas 108 includes 3D visual characteristics extracted from shapepalette 106 (e.g., Lambertian shading).

FIG. 2 shows, at 200, one example of rendering an image with 3Dcharacteristics based on correlation between markup in an image canvasand markup in a shape palette. FIG. 2 is discussed with reference tographics tool interface 102.

At 202, an image is illustrated that is marked up in an image canvas. Inthis example, an image file is imported into the image canvas and theuser provides markup over the image. This is not required, however, anda user can provide markup to the image canvas without importing animage. In other examples, a user can import a graphic image and provideshape palette markup to impart 3D characteristics to the graphic imageby correlating lines and other shapes from the graphic image with theshape palette markup. User markup of the image canvas is illustrated at204 through 220. The user markup of the image canvas can be classifiedin two different types of user markup. A first type of user markup issilhouette markup. Silhouette markup denotes regions in the image canvaswhere the 3D information is tangent to the markup primitive and isconsider to lie within the plane of the canvas. For example, if a 2Dstraight line is drawn as silhouette markup, then the 3D directions thatwill be associated with that straight-line will be directionsperpendicular to that line. This means the 3D information can becomputed directly from the 2D image canvas markup, thereforecorresponding markup on the shape palette is not necessary. In thisexample, markups 204 and 206 are silhouette markups and therefore do notrequire corresponding 3D markup in the shape palette. This is notintended to be limiting, however, and other examples may utilizesilhouette markup in both the image canvas and the shape palette.

A second type of user markup is non-silhouette markup. Non-silhouettemarkup has corresponding markup in the image palette and enables a userto impart 3D visual characteristics to a rendered image. In thisexample, markups 208 through 220 are non-silhouette markups and havecorresponding markups in the shape palette.

Shape palettes are shown at 222 and 224. While these are shown as twoseparate shape palettes, the images can be displayed together (as shownin FIG. 1). Shape palette 222 represents a Lambertian-shaded image of aconvex sphere. Thus, shape palette 222 can be visualized as 3Dinformation extending outward from the plane of the 2D interface. Shapepalette 224 represents a Lambertian-shaded image of a concave sphere.Thus, shape palette 224 can be visualized as 3D information extendinginward from the plane of the 2D interface (i.e., away from the user'sview).

As discussed above, to impart 3D visual characteristics to an image, auser may mark up the image canvas and make corresponding markup to theshape palette. In this example, the user marks up image 202 and makescorresponding markup to shape palettes 222 and 224. For example, theuser provides markup 208 to image 202 and provides corresponding markup226 to shape palette 222. The user then provides markup 210 to image 202and provides corresponding markup 228 to shape palette 224, and so onfor the remaining image and shape palette markups. Thus, in thisexample, in addition to the previously discussed correspondence, imagemarkup 212 corresponds to shape palette markup 230, image markup 214corresponds to shape palette markup 232, image markup 216 corresponds toshape palette markup 234, image markup 218 corresponds to shape palettemarkup 236, and image markup 220 corresponds to shape palette markup238. In this example, image markups 204 and 206 are silhouette markupsand do not require shape palette markup.

Once a user has provided markup to an image canvas (e.g., markup ofimage 202) and corresponding markup to a shape palette (e.g., shapepalettes 222 and 224), a rendered image 240 can be generated using the3D information extracted from the shape palette(s). In this example,rendered image 240 is rendered based on the markup of image 202 and thecorresponding markup of shape palettes 222 and 224.

Illustrative Shape Palette

FIG. 3 shows at 300 an illustrative shape palette 106, introduced inFIG. 1. Shape palette 106 enables a user to choose an image or images touse as reference images to impart 3D information to markup in an imagecanvas. Shape palette 106 can be any suitable image that can be used toextract 3D geometric information. As shown in FIG. 3, examples of shapepalettes include a sphere, a cylinder, a cone, a face, and so on. Theshape palettes can be Lambertian-shaded to indicate 3D information. Theshape palette may also include a drop-down menu or other user interfaceto allow a user to select the desired shape palette. This example is notintended to be limiting and any suitable type and arrangement of shapepalette(s) can be utilized.

Illustrative Processes

Illustrative processes are described in this section with additionalreference to FIGS. 1-3. The processes are described in the context ofgraphics tool interface 102 shown above for convenience only, and theprocesses are broadly applicable to other interfaces and systems.

The illustrative processes may be described in the general context ofcomputer executable instructions and are illustrated as collections ofblocks in logical flowcharts, which represent sequences of operationsthat can be implemented in hardware, software, or a combination thereof.Generally, computer executable instructions can include routines,programs, objects, components, data structures, procedures, modules,functions, and the like that perform particular functions or implementparticular abstract data types. The processes may also be practiced in adistributed computing environment where functions are performed byremote processing devices that are linked through a communicationsnetwork. In a distributed computing environment, computer executableinstructions may be located in both local and remote computer storagemedia, including memory storage devices.

FIG. 4 illustrates at 400 a process for imparting 3D characteristics toan image in a 2D space. At 402, image 404 is imported to an imagecanvas. At 406, the image canvas is marked up using image 404 as astencil. At 408, a shape palette 410 is marked up with markup thatcorresponds to the markup of image 404 at 406. The illustrated shapepalette includes a sphere and a face. The face shape palette containstypical 3D aspects of facial features, such as eye sockets, a nose, amouth, and so on. The “face palette” can be used to mark up a moredetailed facial image, such as image 404, to give the facial image 3Dcharacteristics.

Markup 412 of image 404 is a silhouette markup and, in this example,does not require corresponding 3D markup in shape palette 410. Othermarkups are non-silhouette markups and thus have corresponding markupsin shape palette 410. The correspondence of image 404 markup and shapepalette 410 markup is as follows: Image markup 414 corresponds to shapepalette markup 416; Image markup 418 corresponds to shape palette markup420; Image markup 422 corresponds to shape palette markup 424; Imagemarkup 426 corresponds to shape palette markup 428; and Image markup 430corresponds to shape palette markup 432. Based on the markupcorrespondence, 3D information is extracted from the shape palettes andimparted to the image markups, at 434, to render an image with the 3Dcharacteristics. At 436, the rendered image is used to relight image 404and create image 438 that displays 3D characteristics. Thus, thediscussed techniques can be used to impart 3D characteristics to 2Dimages.

FIG. 5 illustrates, at 500, an exemplary process for imparting 3D visualcharacteristics to an image based on user markup. At 502, a userprovides markup in an image canvas. In one example, an image file can beloaded and an image from the image file displayed in the image canvas.In some examples, act 502 can include tracing, importing, and/orotherwise receiving user markup in an image canvas. At 504, the usermarks up a shape palette to correspond with the image canvas markup.Thus, the user markup of the image canvas and the shape palette can besaid to indicate data points within the image canvas and the shapepalette. At 506, the shape palette markup is correlated with thecorresponding image canvas markup. The image canvas markup and the shapepalette markup can be provided in a “tit-for-tat” fashion such thatafter a user provides a particular stroke, line or image in the imagecanvas, the user then provides a corresponding markup in the shapepalette. Other implementations may utilize different ways of correlatingimage canvas markup with shape palette markup, such as color-basedcorrelation. For example, all markup of a specific color in the imagecanvas may be correlated with markup of the same or similar color in theshape palette. In other examples, the markup in the image canvas and theshape palette may not be provided in a “tit-for-tat” fashion, and theimage canvas may be partially or completely marked up before the shapepalette receives user markup. In that case, strokes in the image canvasmay subsequently be correlated with strokes in the shape palette.

At 508, 3D information is extracted from the shape palette based on theuser markup of the shape palette. The 3D information can includegeometric information, such as normal values (e.g., in terms of x, y andz coordinates) and pixel values (e.g., brightness) for each pointindicated in the user markup of the shape palette. At 510, the 3Dinformation is processed to produce data that can generate an image with3D characteristics. In some examples, normal values extracted from theshape palette are warped to the image canvas markup using geometrictechniques such as thin-plate splines. At 512, an image with 3Dcharacteristics is rendered using the data.

FIG. 6 illustrates more detailed aspects of one illustrativeimplementation of act 510, discussed above with reference to FIG. 5. Theprocess shown at 510 is one process for generating an image with 3Dcharacteristics using a sparse set of normals indicated by user markupof a shape palette. At 600, a set of normals and a set of pixelsindicated by user markup of a shape palette are received. At 602, theset of normals and the set of pixels are processed to produce a densenormal map that can then be used to render an image with 3Dcharacteristics. For purposes of example, one method of processing theset of pixels and the set of sparse normals is presented below.

A normal represents a 3D direction in Euclidean space and can beexpressed as n=[x,y,z]^(T). A unit normal is a normal whose x, y, and zcomponents are of length one, i.e. 1=√{square root over (x²+y²+z²)}. Analternative representation of a normal may be denoted as

${n = {\frac{1}{\sqrt{p^{2} + q^{2} + 1}}\left\lbrack {{- p} - {q\; 1}} \right\rbrack}^{T}},{where}$${p = -}\frac{x}{z}$ and ${p = -}\frac{y}{z}$

associated with a unit normal [x,y,z]^(T). Consider now we have animage, where each pixel is denoted by i, and we wish to have a normalassociate with that pixel. We can denote each normal in the image

$n_{i} = {{\frac{1}{\sqrt{p_{i}^{2} + q_{i}^{2} + 1}}\left\lbrack {{- p_{i}} - {q_{i}1}} \right\rbrack}^{T}.}$

The shape palette can be considered as an image that has a normal atevery pixel. The aforementioned markup procedure provides a way for theuser to transfer the normals from the shape palette to the image canvas.In some cases, this transfer via markup is very spare, and the goal isto compute a dense normal image based on the sparse markup. Thefollowing illustrative method shows one way to estimate the p_(i)component of the normal n_(i) for all pixels in an image rendered with3D characteristics. The same method can be used to estimate q_(i).

Consider an image that is set of normal values, G={iε1 . . . N}. G is aset of p's and N is the total number of pixels of the canvas. G can beestimated using the sparse set of normal values generated by user markupof the shape palette. The set of normal values generated by user markupof the shape palette is represented by the observation set O={{tildeover (p)}_(k)|kεS}, where {tilde over (p)}_(k) is known and S is the setof corresponding pixel locations. G can be obtained by solving thefollowing associated energy function:

E(G)=log(P(O|G))+log(P(G))   (1)

where (P(O|G)) is the likelihood and (P(G)) is the prior. The likelihoodcan be defined as:

$\begin{matrix}{{P\left( {OG} \right)} = {\prod\limits_{k \in S}{\exp \left( {- {\frac{{{p_{k} - {\overset{\sim}{p}}_{k}}}^{2}}{2\sigma_{1}^{2}}}} \right)}}} & (2)\end{matrix}$

which measures the faithfulness of the output normal map to the input O;the prior P(G) is defined as:

$\begin{matrix}{\prod\limits_{i}{\prod\limits_{j}{{\exp \left( {- {\frac{{{p_{i} - p_{j}}}^{2}}{2\sigma_{2}^{2}}}} \right)}{\prod\limits_{i}{\exp\left( {- {\frac{{{{\sum\limits_{j}p_{j}} - {4p_{i}}}}^{2}}{2\sigma_{3}^{2}}}} \right)}}}}} & (3)\end{matrix}$

where σ₁,σ₂,σ₃ are the respective uncertainty measurements, and jεN(i)is the pixel locations of the first-order neighbors, that is surroundingpixels, of pixel i. The likelihood energy measures the faithfulness ofthe output dense normal map to the input O. The first exponent in theprior energy (3) enforces the smoothness of the normal orientation,while the second exponent minimizes the surface curvature corresponds tothe output dense normal map. The values σ₁,σ₂,σ₃ can be set by the user,which indicates the weight or importance of the associated exponents.The energy function (1) is convex with the above likelihood and priordefinitions, and the associated optimization thus converges to a globaloptimal solution. Standard numerical optimization packages can be usedto solve equation (1). From this dense normal map, G, estimated usingequation (1), a 3D surface or height map can be generated using standardshape-from-normal estimation techniques.

Illustrative Apparatus

FIG. 7 illustrates, at 700, one example of an apparatus 702 that canimplement the discussed processes and techniques. While illustrated as adesktop computer, apparatus 702 can include any suitable device,including a personal computer, a laptop computer, a personal digitalassistant (PDA), a cellular phone, and so on.

Apparatus 702 includes a system memory 704, processor(s) 706, andinput/output components 708. Processor(s) 706 may include, for example,microprocessors, microcomputers, microcontrollers, multi-coreprocessors, and so forth. Processor(s) 706 are configured to retrieveand execute computer-program instructions stored in system memory 704.System memory 704 includes computer-readable media in the form ofvolatile memory, such as Random Access Memory (RAM) and/or non-volatilememory, such as Read Only Memory (ROM) or flash RAM. Input/outputcomponents 708 (e.g., a mouse and keyboard) provide data input andoutput capabilities for apparatus 702.

Embodied on system memory 704 are programming modules that can implementthe discussed processes and techniques. Image canvas module 710generates an image canvas and receives user markup of the image canvas.The image canvas module 710 can also import and export images as part ofthe image markup process. Shape palette module 712 generates and/orretrieves shape palettes and receives user markup of shape palettes.Rendering module 714 processes user markup of an image canvas and ashape palette to render an image with 3D characteristics. In someexamples, rendering an image with 3D characteristics includes displayingthe image. User interface module 716 generates and/or displays userinterfaces that enable a user to interact with the apparatus andimplement the discussed processes and techniques.

While various illustrative device and operating implementations havebeen described, the components, modules, and features of theseimplementations may be rearranged, modified, and/or may be omittedentirely, depending on the circumstances.

Also, it should be understood that certain acts in the methods need notbe performed in the order described, may be rearranged, modified, and/ormay be omitted entirely, depending on the circumstances.

Moreover, any of the acts described above with respect to any method maybe implemented by a processor or other computing device based oninstructions stored on one or more computer-readable media.Computer-readable media can be any available media that can be accessedlocally or remotely by the resource modeling application. By way ofexample, and not limitation, computer-readable media may comprisevolatile and nonvolatile, removable and non-removable media implementedin any method or technology for storage of information such ascomputer-readable instructions, data structures, program modules orother data. Computer-readable media includes, but is not limited to,RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM,digital versatile disks (DVD) or other optical storage, magneticcassettes, magnetic tape, magnetic disk storage or other magneticstorage devices, or any other medium which can be used to store thedesired information and which can be accessed by the resource modelingapplication. Combinations of the any of the above should also beincluded within the scope of computer-readable media.

Conclusion

Although the invention has been described in language specific tostructural features and/or methodological acts, it is to be understoodthat the invention is not necessarily limited to the specific featuresor acts described. Rather, the specific features and acts are disclosedas illustrative forms of implementing the invention.

1. A method comprising: receiving a graphical image in a two-dimensionalspace; presenting a shape palette comprising a two-dimensionalrepresentation of a three-dimensional shape; and impartingcharacteristics of three-dimensionality to the graphical image based onuser markup of the shape palette.
 2. A method as recited in claim 1,wherein receiving the graphical image comprises loading an image fileinto the two-dimensional space.
 3. A method as recited in claim 1,wherein the shape palette comprises an orthographic projection of ashape model.
 4. A method as recited in claim 1, wherein the shapepalette comprises a Lambertian-shaded image.
 5. A method as recited inclaim 1, wherein the shape palette comprises a sphere.
 6. A method asrecited in claim 1, wherein the shape palette comprises a plurality ofpixels, each of the plurality of pixels associated with a normal value.7. A method as recited in claim 1, wherein the user markup of the shapepalette comprises user selection of a plurality of points on the shapepalette, the plurality of points used to extract a set of pixels and aset of normal values from the shape palette, the imparting of thecharacteristics of three-dimensionality to the graphical image based onprocessing the set of pixels and the set of normal values to render agraphical image with three-dimensional characteristics.
 8. A method asrecited in claim 1, further comprising rendering the graphical imagewith the characteristics of three-dimensionality.
 9. One or morecomputer-readable media comprising computer executable instructionsthat, when executed, perform acts comprising: generating a shapepalette, the shape palette comprising a two-dimensional visualrepresentation of geometric information in three dimensions; receivinguser markup of the shape palette to extract a set of geometricinformation; and rendering a visual image based at least in part on theset of geometric information.
 10. One or more computer-readable media asrecited in claim 9, wherein the shape palette comprises an orthographicprojection that incorporates Lambertian shading.
 11. One or morecomputer-readable media as recited in claim 9, wherein the shape palettecomprises one or more of a concave sphere and a convex sphere.
 12. Oneor more computer-readable media as recited in claim 9, wherein the setof geometric information comprises a plurality of pixels and a pluralityof normal values, each of the plurality of pixels associated with one ofthe plurality of normal values.
 13. One or more computer-readable mediaas recited in claim 12, wherein rendering the visual image comprisesderiving a dense normal map from the plurality of pixels and theplurality of normal values.
 14. One or more computer-readable media asrecited in claim 9, wherein rendering the visual image comprises:receiving user markup of a graphic image; and correlating the usermarkup of the graphic image with the user markup of the shape palette.15. One or more computer-readable media as recited in claim 9, whereinthe visual image is rendered based at least in part on a plurality ofbrightness values.
 16. An apparatus comprising: a canvas module togenerate a user canvas and to receive user markup on the user canvas;and a shape palette module to generate a shape palette and configured toreceive user markup of the shape palette, the shape palette comprising atwo-dimensional visual representation of three-dimensional geometricinformation, the user markup of the shape palette extracting a set ofgeometric information from the shape palette that is applied at least inpart to render a graphical image.
 17. An apparatus as recited in claim16, wherein the shape palette comprises an orthographic projectionincorporating Lambertian shading.
 18. An apparatus as recited in claim16, wherein the geometric information comprises a plurality of normalvalues.
 19. An apparatus as recited in claim 16, further comprising arendering module to process the set of geometric information to producea data set and render an image with three-dimensional visualcharacteristics based at least in part on the data set.
 20. An apparatusas recited in claim 16, further comprising a user interface module todisplay the user canvas and the shape palette.